package com.liaoyifan.core.properties;

import lombok.Data;

@Data
public class HikariProperties {
    private String driverClassName = "com.mysql.cj.jdbc.Driver"; // 数据库驱动类名
    private Integer maxPoolSize = 50; // 最大连接数
    private Integer minIdle = 10; // 最小空闲连接数（建议为 maxPoolSize 的 20%）
    private Long connectionTimeout = 30000L; // 连接超时时间（从池获取连接的最大等待时间）
    private Long validationTimeout = 5000L; // 验证连接有效性的超时时间
    private Long idleTimeout = 300000L; // 空闲连接超时时间（建议业务请求平均间隔 × 3)
    private Long maxLifetime = 1740000L; // 连接最大生命周期（29分钟 要比MySQL的wait_timeout小）
    private String connectionTestQuery = "SELECT 1"; // 连接测试查询（轻量级 SQL，如 MySQL 用 "SELECT 1"）
    private Boolean isAutoCommit = false; // 控制连接的自动提交行为,spring事务接管，避免意外提交
    private Long keepaliveTime = 30000L; // 连接保活检测间隔（单位：毫秒）防止数据库防火墙断开空闲连接（比 idleTimeout 更主动）
    private Long leakDetectionThreshold = 600000L; // 泄露检测时间（单位：毫秒）
    private String jdbcUrl;
    private String username;
    private String password;
}
